/*
 * HttpResponse.h
 *
 */

#ifndef HTTPRESPONSE_H_
#define HTTPRESPONSE_H_

#include <string>
#include "HttpMessage.h"

class HttpResponse: public HttpMessage {
	private:
		int code;
		std::string reasonPhrase;
		HttpBody* body;
	public:
		/**
		 * Crea una instancia de la clase vacia.
		 */
		HttpResponse();

		virtual ~HttpResponse();

		/**
		 * Devuelve el status code del response.
		 */
		int getCode() const;

		/**
		 * Establece el status code del response junto con la
		 * standard Reason Phrase.
		 */
		void setCode(int code);

		/**
		 * Establece el reason Phrase pasado.
		 */
		void setReasonPhrase(const std::string& reason);

		/**
		 * Devuelve el statusLine del response.
		 */
		std::string getStatusLine() const;

		/**
		 * Devuelve verdadero o false según si el response tiene o no body.
		 */
		bool hasBody() const;

		/**
		 * Devuelve una referencia al body contenido si hasBody() es true.
		 */
		HttpBody& getBody() const;

		/**
		 * Asocia el body pasado a la instancia de la clase.
		 * Si habia otro, lo borra.
		 */
		void setBody(HttpBody* body);
};

#endif /* HTTPRESPONSE_H_ */
